package com.utn.tp.integrador.conexion;

import com.utn.tp.integrador.bd.BaseDatosSingleton;
import com.utn.tp.integrador.notificaciones.NotificacionConexion;

import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;

public class ConexionAsyncTask extends AsyncTask<String, Integer, String> {
	protected String action;
	protected Context context;
	protected Intent intent;
	protected String fecha;

	public ConexionAsyncTask(String action, Context context, Intent intent,
			String fecha) {
		this.action = action;
		this.context = context;
		this.intent = intent;
		this.fecha = fecha;
	}

	@Override
	protected String doInBackground(String... params) {
		String result = null;
		NetworkInfo network = intent
				.getParcelableExtra((ConnectivityManager.EXTRA_NETWORK_INFO));
		try {
			if (!network.isConnected()) {
				BaseDatosSingleton.getInstance(context).getBaseDatos()
						.insertarCambioConexion("Desconexion", fecha);
				return "Desconexion";
			} else if (network.getType() == ConnectivityManager.TYPE_MOBILE) {
				BaseDatosSingleton.getInstance(context).getBaseDatos()
						.insertarCambioConexion("3G", fecha);
				return "3G";
			} else if (network.getType() == ConnectivityManager.TYPE_WIFI) {
				BaseDatosSingleton.getInstance(context).getBaseDatos()
						.insertarCambioConexion("Wi-Fi", fecha);
				return "Wi-Fi";
			} else if (network.getType() == ConnectivityManager.TYPE_WIMAX) {
				BaseDatosSingleton.getInstance(context).getBaseDatos()
						.insertarCambioConexion("Wi-Max", fecha);
				return "Wi-Max";
			}
		} catch (Exception ex) {

		}
		return result;
	}

	protected void onPostExecute(String result) {
		super.onPostExecute(result);
		if (result.equals("Desconexion")) {
			NotificacionConexion.notifyNetworkDisconnection(context);

		} else {
			NotificacionConexion.notifyNetworkConnection(context, result);

		}
	}
}
